<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <ul class="list">
      <li>item</li>
    </ul>
  </div>
  <script>
    // vue会根据DOM结构构造一个虚拟DOM，类似于下面这种对象结构，一篇文档就是一个很大的对象
    // vue会根据这个对象去渲染指令，数据，构造出真实DOM
    // 最后构造出来的真实DOM经过一次渲染到页面上，也就是说真实DOM操作只有一次，因为在构造的过程中操作的是js对象

    // 当数据发生变化时，会先把js对象里的属性做相应更改，再去重新刷新DOM
    // 脏检查：diff算法，fiber算法
    const div = {
      tagName: 'div',
      id: 'app',
      style: {  },
      children: [
        {
          tagName: 'ul',
          className: 'list',
          children: [
            {
              tagName: 'li',
              // ...
            }
          ]
        }
      ]
    }
  </script>
</body>
</html>